'use strict';

module.exports = app => {
  const { ENUM, INTEGER, STRING } = app.Sequelize;

  // 订单
  const Order = app.model.define('order', {
    // 标题
    title: { type: STRING, allowNull: false },
    // 价格
    price: { type: INTEGER, allowNull: false },
    // 优惠金额
    discount: { type: INTEGER, allowNull: false, defaultValue: 0 },
    // 总计
    amount: { type: INTEGER, allowNull: false },
    // 支付方式
    payment: {
      type: ENUM,
      values: [ 'balance', 'wechatPay' ],
      allowNull: false,
    },
    // 店家联系电话
    phone: STRING,
    // 店家地址
    address: STRING,
    // 状态
    status: {
      type: ENUM,
      values: [ 'unpaid', 'completed' ],
      allowNull: false,
      defaultValue: 'unpaid',
    },
    // 状态
    userStatus: {
      type: ENUM,
      values: [ 'unfinished', 'completed' ],
      defaultValue: 'unfinished',
    },
    // 收货地址
    receiverAddress: STRING,
    // 收货人名称
    receiverName: STRING,
    // 收货手机号
    receiverPhone: STRING,
    // 备注
    remark: STRING,
  });

  Order.associate = function() {
    // 主图
    Order.belongsTo(app.model.File, { as: 'image' });
    // 商品
    Order.hasOne(app.model.OrderItem);
    // 门店
    Order.belongsTo(app.model.Store);
    // 用户
    Order.belongsTo(app.model.User);
    // 商户收入日志
    Order.hasMany(app.model.MerchantIncomeLog);
    // 佣金日志
    Order.hasMany(app.model.CommissionLog);
    // 团队佣金日志
    Order.hasMany(app.model.GroupCommissionLog);
    // 交易
    Order.hasMany(app.model.Trade);
    // 优惠券
    Order.hasOne(app.model.Coupon);
  };

  return Order;
};
